﻿using NUnit.Framework;
using System.Collections.Generic;
using OpenSda.Agilcont.Common.Data.Contracts;
using OpenSda.Agilcont.Common.Data.Entities;
using System.Linq;

namespace OpenSda.Agilcont.Common.Data.NhContexts.NuTest
{

    [TestFixture]
    public class TipoCambioDataTest : AbstractBaseDataTests
    {
        private ITipoCambioData target;
        private IEmpresaData empresaData;

        // These properties will be injected based on type
        public ITipoCambioData TipoCambioData { set { target = value; } }
        public IEmpresaData EmpresaData { set {empresaData = value; } }

        [Test()]
        public void GetAllQueryableTest()
        {
            IList<TipoCambio> tipoCambio = target.GetAllQueryable().Where(e => e.Compra == "2345").ToList();
            Assert.IsTrue(tipoCambio.Count > 0);
        }

        [Test]
        public void SaveTest()
        {
            TipoCambio tipoCambio = this.Save();
            Assert.IsNotNull(tipoCambio.Identity);
        }

        private TipoCambio Save()
        {
            Empresa e = empresaData.GetAll()[0];

            return target.Save(new TipoCambio()
            {
               //Fecha = new DateTime(1997, 01, 12),
               Compra = "34567",
               Venta = "234567",
                EmpresaRef = e
            });
        }

        [Test]
        public void listTest()
        {
            this.GetById(new TipoCambio() { Compra = "3234" });
        }
        public IList<TipoCambio> GetById(object Id)
        {
            IList<TipoCambio> tipoCambio = target.GetAllQueryable().Where(e => e.Compra == Id.ToString()).ToList();
            return tipoCambio;
        }

        [Test]
        public void listfilterTest()
        {
            this.getListByFilter("arcadio");
        }
        public IList<TipoCambio> getListByFilter(string val)
        {
            IList<TipoCambio> tipoCambio = target.GetListByFilter(val).ToList();
            return tipoCambio;
        }

        [Test]
        public void EmpresaDaoSeclectTests()
        {
            TipoCambio e = target.Select(new TipoCambio() { Compra = "1" });
            Assert.IsNotNull(e);
        }

        [Test]
        public void EmpresaDaListAllTests()
        {
            var e = target.GetAll();

            Assert.IsNotNull(e);
        }

        [Test]
        public void EmpresaDeleteTests()
        {
            TipoCambio e = new TipoCambio();
            e.Compra = "1";
            target.Delete(e);
        }

    }
}
